//
//  WRSFaceInfo.h
//  WRSFace
//
//  Created by 温日盛 on 2025/10/10.
//

#import <Foundation/Foundation.h>
#import <WRSFace/WRSMultipleFaceData.h>
#import <WRSFace/WRSRGBLivenessConfidence.h>
#import <WRSFace/WRSFaceInteractionState.h>
//#import "WRSFace-Swift.h"

NS_ASSUME_NONNULL_BEGIN

@interface WRSFaceRect : NSObject

@property (assign, nonatomic) signed int x;
@property (assign, nonatomic) signed int y;
@property (assign, nonatomic) signed int width;
@property (assign, nonatomic) signed int height;

@end


@interface WRSFaceEulerAngle : NSObject

@property (assign, nonatomic) float roll;
@property (assign, nonatomic) float yaw;
@property (assign, nonatomic) float pitch;
@end

@interface WRSMultipleFaceData : NSObject

@property (assign, nonatomic) signed int detectedNum;
@property (retain, nonatomic, nullable) NSArray<WRSFaceRect *> *rects;
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *trackIds; // int
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *trackCounts; // int
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *detConfidence; // int
@property (retain, nonatomic, nullable) NSArray<WRSFaceEulerAngle *> *angles;


@end

@interface WRSRGBLivenessConfidence : NSObject

@property (assign, nonatomic) int num;
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *confidence; // float

@end

@interface WRSFaceInteractionState : NSObject

@property (assign, nonatomic) int num;
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *leftEyeStatusConfidence; // float
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *rightEyeStatusConfidence; // float

@end

@interface WRSFaceInteractionsActions: NSObject

@property (assign, nonatomic) int num;
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *normal; // [Int]?
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *shake; // [Int]?
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *jawOpen; //[Int]?
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *headRaise; // [Int]?
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *blink;//  [Int]?

@end

@interface  WRSFaceAttributeResult: NSObject
@property (assign, nonatomic) int num;
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *race; // [Int]?
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *gender; // [Int]?
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *ageBracket; // [Int]?

@end

@interface WRSFaceEmotionResult: NSObject

@property (assign, nonatomic) int num;
@property (retain, nonatomic, nullable) NSArray<NSNumber *> *emotion; // [Int]?

@end

@interface WRSFaceInfo : NSObject

@property (retain, nonatomic, nullable) WRSMultipleFaceData *faceData;
@property (retain, nonatomic, nullable) WRSRGBLivenessConfidence *rgbLiveness;
@property (retain, nonatomic, nullable) WRSRGBLivenessConfidence *faceQuality;
@property (retain, nonatomic, nullable) WRSRGBLivenessConfidence *faceMask;
@property (retain, nonatomic, nullable) WRSFaceInteractionState *faceInteractionState;
@property (retain, nonatomic, nullable) WRSFaceInteractionsActions *faceInteractionsActions;
@property (retain, nonatomic, nullable) WRSFaceAttributeResult *faceAttribute;
@property (retain, nonatomic, nullable) WRSFaceEmotionResult *faceEmotion;

@end



NS_ASSUME_NONNULL_END
